#include "plugin_database.h"

/**
 * @brief plugin_config::initUi 初始化ui
 */
void plugin_database::initUi()
{
    static bool initFlag = true;
    if (initFlag)
    {
        initFlag = false;
        plugin_database_ui->verticalLayout_2->addWidget(&m_table);
        // 设置所有QComboBox的项高
        // setAllComboBoxItemHeight(40);
        // 信号绑定
        QObject::connect(&m_table, &database_table::signalToForward,
                         this, [this](const QString &arg) { // 改用const引用
                             emit messageFromPlugin(pluginName(), arg);
                         });
    }
}

/**
 * @brief sendMessageToPlugin 接收来自其他任务的信息
 * @param msg
 */
void plugin_database::sendMessageToPlugin(const QString &msg)
{
    initUi();
    processJsonCommand(msg);
}
/**
 * @brief plugin_config::processJsonCommand 解析json字符串,执行对应命令
 * @param jsonStr
 */
void plugin_database::processJsonCommand(const QString &jsonStr)
{
    QString err;
    if (false == m_table.processJsonCommand(jsonStr, &err))
    {
        emit messageFromPlugin(pluginName(), err);
    }
}
/**
 * @brief setAllComboBoxItemHeight 统一设置所有QComboBox的项高
 * @param height 项高(px)
 */
void plugin_database::setAllComboBoxItemHeight(int height)
{
    // 查找所有的QComboBox子控件
    QList<QComboBox *> comboBoxList = m_table.findChildren<QComboBox *>();

    // 遍历并设置每个QComboBox的样式表
    for (QComboBox *comboBox : comboBoxList)
    {
        QString styleSheet = QString("QComboBox QAbstractItemView::item {"
                                     "   min-height: %1px;"
                                     "}")
                                 .arg(height);
        comboBox->setStyleSheet(comboBox->styleSheet() + styleSheet);
    }
}